<template>
  <div>
    <UploadExcel :on-success="success" />
  </div>
</template>

<script>
import { importEmployee } from '@/api/employees'

// 路由懒加载：访问到当前的路由的时候再去加载对应的页面文件
// yarn build 的时候,
// 打包的时候：如果说没有路由的懒加载，一次性把所有文件打包到一个文件里面
// 如果有了路由懒加载：动态的分包，打包出多个js文件，使用多少个import('')
// 首屏只是拿到了当前页面的文件，展示速度就很快
// 如果访问了其他路由，再去动态加载其他页面文件,打包的时候已经分包了

// import('文件路径') 返回是一个promise，成功回调函数里面，会把文件作为参数传入

// es6支持import的，webpack内部使用了兼容语法实现了import

// 总结：
// 1、什么是路由懒加载？
// 访问了某个路由文件的时候，再去请求当前页面对应的js文件
// 2、动态请求的js文件从哪来的
// 打包(yarn build)的时候只要遇到import('文件路径)，webpack就会把当前文件分包（单独打包成一个js文件）,使用到这个js的时候，再返回给客户端

// 3、import语法是什么东西？
// es6默认支持import语法的，webpack自己实现了一套import的功能(考虑浏览器兼容性问题)

// 4、如何获取import('路径')导入的文件（内部必须导出模块）
// import()返回的是一个promise，可以在成功回调里面，拿到我们预期导入文件的内部默认导出或者按需导出的代码
import('@/utils/request').then(res => {
  console.log(res)
})

export default {
  name: 'Import',
  methods: {
    async success({ header, results }) {
      console.log(1)
      const userRelations = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber'
      }
      // results里面的数据对象的中文的key变成英文的key
      // 请求接口、后端返回给我的数据并不是我们想要的数据格式

      const arr = results.reduce((prev, curr) => {
        const obj = {}
        for (const currKey in curr) {
          // 下面的if判断，会把时间的数据拦截掉 --> 调用特定的方法格式化时间
          if (userRelations[currKey] === 'timeOfEntry' || userRelations[currKey] === 'correctionTime') {
            obj[userRelations[currKey]] = new Date(this.formatDate(curr[currKey], '/')) // 只有这样, 才能入库
          } else {
            obj[userRelations[currKey]] = curr[currKey]
          }
        }
        return [
          ...prev,
          obj
        ]
      }, [])
      await importEmployee(arr)
      this.$message.success('导入成功')
      //  返回上一级路由
      this.$router.back()
    },
    // excel中的时间是一个数字，需要调用此方法进行处理 -> 直接复制
    formatDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1)
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + month + format + date
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>
